#pragma once

#include "glm/glm.hpp"

namespace Orange {
	/// <summary>
	/// �������
	/// </summary>
	class OrthogonalCamera
	{
	public:
		OrthogonalCamera(float left, float right, float bottom, float top );


		 const glm::vec3& GetPosition() const {return m_Position;};
		 void SetPosition(const glm::vec3& Position) {
			 m_Position = Position; CalculatePrejectViewMatrix();};
		 const float GetRotation(float Rotation) const { return m_Rotation;};
		 void SetRotation(float Rotation) {
			m_Rotation = Rotation;
			CalculatePrejectViewMatrix();
		};

		 void SetPrejectMatrix(float left, float right, float bottom, float top);

		 const glm::mat4& GetViewPrejectMatrix() const { return m_ViewPrejectMatrix; };
		 const glm::mat4& GetPrejectMatrix() const { return m_PrejectMatrix; };
		 const glm::mat4& GetViewMatrix() const { return m_ViewMatrix; };

		void CalculatePrejectViewMatrix();
	private:
		glm::mat4 m_PrejectMatrix;
		glm::mat4 m_ViewMatrix;
		glm::mat4 m_ViewPrejectMatrix;

		glm::vec3 m_Position = { 0.0f ,0.0f , 0.0f };
		float m_Rotation = 0.0f;
	};

}